package com.css.fxfzdzzh.modules.tifData.service;

import com.css.fxfzdzzh.modules.eqLandslide.count.entity.Slope;
import com.css.fxfzdzzh.modules.eqLandslide.lawAnalysis.vo.SlopesVO;
import com.css.fxfzdzzh.modules.tifData.param.AspectTifComputeParam;
import com.css.fxfzdzzh.modules.tifData.param.SlopeTifComputeParam;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface ElevationMapService {

    //根据上传的坡度tif文件发布超图图层
    public List<String> importSlopeTif(String tifFileName);

    //根据上传的坡向tif文件发布超图图层
    public List<String> importAspectTif(String tifFileName);

    //计算坡度
    public List<String> computeSlopeTif(SlopeTifComputeParam slopeTifComputeParam);

    //计算坡向
    public List<String> computeAspectTif(AspectTifComputeParam aspectTifComputeParam);

    //读取坡度tif文件进行坡度分区统计（网格数、面积、占比）
    public List<String> countSlopeTif(String filePath);

    //根据区域投影到6度带或3度带，计算投影面积之和（平方公里)
    public BigDecimal getAreaByGeomEpsgCount(String geomText);

    //获取任务范围extent经纬度
    public List<Double> getTaskExtent(String taskId);

    //获取任务范围中心点经纬度
    public List<String> getTaskCenterLonLat(String taskId);

    //按投影带查询空间数据长度（米）
    public double getLengthByGeomText(String geomText,String epsgType);

    //根据任务ID获取投影坐标EPSG
    public int getEPSGFromTask(String taskId);

    //根据空间数据wkt获取投影坐标EPSG
    public int getEPSGFromGeomText(String geomText);

    //获取区域范围extent经纬度
    public List<Double> getGeomExtentLonLat(String geomText);

    //获取中心点经纬度
    public List<String> getCenterLonLat(String geomText);

    //根据经度获取投影坐标--3度带
    public int getEPSGFromLon3(double srcLon);

    //根据经度获取投影坐标--6度带
    public int getEPSGFromLon6(double srcLon);

    //处理空间数据，判断存在自相交则获取修复后的空间数据，否则返回原空间数据wkt
    public String getGeomValidWkt(String geomText);

    //校验空间数据是否自相交
    public String isGeomValid(String geomText);

    //修复空间数据自相交，获取修复后的空间数据
    public String makeGeomValid(String geomText);

    //判断2个空间数据是否相交
    public boolean isGeomIntersect(String geomText1,String geomText2);

   String getByGeomAndTIF(String geom, String filePath);

    Map<String, List<Map<String,String>>> getSlopeByGeomAndTIF1(String geom, String filePath);

    Map<String, List<Map<String,String>>> getAspectByGeomAndTIF1(String geom, String filePath);

    Map<String, List<Map<String, String>>> getElevationByGeomAndTIF(String geomText, String filePath);
}
